local Player = ...
assert(Player);
local HasToasty = false;
local fWidth = ( GAMESTATE:GetCurrentStyle():GetStyleType() == 'StyleType_OnePlayerTwoSides' ) and 600 or 256+16;
return Def.ActorFrame {
	ToastyAchievedMessageCommand=function(self,params)
		if params.PlayerNumber == Player then
			(cmd(thump,1;effectclock,'beat';effectmagnitude,1,1,1;
			effectcolor1,color("1,1.125,1,1");effectcolor2,color("1,1,1,1")))(self);
		end
	end;
	Def.Quad {
		InitCommand=cmd(zoomto,fWidth,SCREEN_HEIGHT;diffuse,PlayerColor(Player);diffusealpha,0;fadeleft,32/(256+16);faderight,32/(256+16));
		ToastyAchievedMessageCommand=function(self,params)
			if params.PlayerNumber == Player then
				(cmd(stoptweening;linear,2.125;diffuse,Colors.Alpha( PlayerColor(Player), 0.345 );glow,color("1,1,1,0.5");decelerate,3;glow,Colors.Alpha( ColorDarkTone( PlayerColor(Player) ), 0 );diffuseramp;
				effectcolor1,ColorLightTone( PlayerColor(Player) );effectcolor2,PlayerColor(Player);
				effectclock,'beat';effectperiod,2;
				))(self);
				HasToasty = true;
			end
		end;
		ToastyDroppedMessageCommand=function(self,params)
			if params.PlayerNumber == Player then
				if HasToasty then
					(cmd(finishtweening;stopeffect;glow,color("1,1,1,0.5");decelerate,0.35;diffuse,Colors.Alpha( Color("Black"), 0.25 );glow,color("1,1,1,0");linear,0.35*0.25;diffusealpha,0))(self);
					HasToasty = false;
				else
					return
				end
			end
		end;
	};
};